package com.qdlc.p2p.dal.dto;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import com.qdlc.p2p.common.constant.Global;
import com.qdlc.p2p.common.util.DateUtil;

/**
 * 酒券方案实体
 *
 * @author ygw
 * @version 1.1.0.0
 * @since 2016年05月6日 13时52分37秒
 */
@Entity
@Table(name = Global.DB_PREFIX + "additional_wine_coupons")
public class WineCoupons {

    /** 主键 */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    /** 酒券名称 */
    private String name;

    /** 状态，是否启用，1启用，0不启用 */
    private byte status;

    /** 发放类型：1现金酒券 */
    private byte type;

    /** 发放方式：1固定金额 */
    private byte payType;

    /** 固定金额，酒券发放方式为固定金额时设置的发放金额 */
    private double amount;

    /** 酒券的有效期天数，0代表永久 */
    private int validDay;

    /** 酒券库存，酒券发放数量控制，0代表不限 */
    private int total;

    /** 发放数量，记录该酒券已发放数量 */
    private int issueNum;

    /** 是否删除，1代表已删除，0未删除 */
    private byte isDelete;

    /** 酒券描述 */
    private String description;
    
    /** 使用规则-标期限：1,2,3 */
    private String timeLimit;
    
    /** 使用规则-投标最小金额 */
    private double maxTenderAmount;
    
    /** 使用规则-投标最大金额 */
    private double minTenderAmount;
    
    /** 数量 */
    private int number;

    /** 酒券添加时间 */
    private Date addTime;

    /** 酒券添加IP */
    private String addIp;

    public WineCoupons() {
    }

    /**
     * 固定金额酒券
     *
     * @param name        酒券名称
     * @param status      酒券状态
     * @param type        酒券类型
     * @param payType     发放方式
     * @param amount      固定金额
     * @param validDay    有效天数
     * @param total       酒券总数
     * @param description 酒券描述
     * @param number 数量
     * @param maxTenderAmount 最大投标金额
     * @param minTenderAmount 最小投标金额
     * @param timeLimit 标期限
     */
    public WineCoupons(String name, byte status, byte type, byte payType,
                       double amount, int validDay, int total, String description, String timeLimit, double minTenderAmount, double maxTenderAmount, int number) {
        super();
        this.name = name;
        this.status = status;
        this.type = type;
        this.payType = payType;
        this.amount = amount;
        this.validDay = validDay;
        this.total = total;
        this.description = description;
        this.timeLimit = timeLimit;
        this.minTenderAmount = minTenderAmount;
        this.maxTenderAmount = maxTenderAmount;
        this.number = number;
        this.addTime = DateUtil.getNow();
        this.addIp = Global.getIP();
    }

    /**
     * 获取主键
     *
     * @return 主键
     */
    public long getId() {
        return id;
    }

    /**
     * 设置主键
     *
     * @param id 要设置的主键
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * 获取酒券名称
     *
     * @return 酒券名称
     */
    public String getName() {
        return name;
    }

    /**
     * 设置酒券名称
     *
     * @param name 要设置的酒券名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取状态，是否启用，1启用，0不启用
     *
     * @return 状态，是否启用，1启用，0不启用
     */
    public byte getStatus() {
        return status;
    }

    /**
     * 设置状态，是否启用，1启用，0不启用
     *
     * @param status 要设置的状态，是否启用，1启用，0不启用
     */
    public void setStatus(byte status) {
        this.status = status;
    }

    /**
     * 获取发放类型，1现金酒券
     *
     * @return 发放类型 1现金酒券
     */
    public byte getType() {
        return type;
    }

    /**
     * 设置发放类型，1现金酒券
     *
     * @param type 要设置的发放类型，1现金酒券
     */
    public void setType(byte type) {
        this.type = type;
    }

    /**
     * 获取发放方式：1固定金额
     *
     * @return 发放方式：1固定金额
     */
    public byte getPayType() {
        return payType;
    }

    /**
     * 设置发放方式：1固定金额
     *
     * @param payType 要设置的发放方式：1固定金额
     */
    public void setPayType(byte payType) {
        this.payType = payType;
    }

    /**
     * 获取固定金额，酒券发放方式为固定金额时设置的发放金额
     *
     * @return 固定金额，酒券发放方式为固定金额时设置的发放金额
     */
    public double getAmount() {
        return amount;
    }

    /**
     * 设置固定金额，酒券发放方式为固定金额时设置的发放金额
     *
     * @param amount 要设置的固定金额，酒券发放方式为固定金额时设置的发放金额
     */
    public void setAmount(double amount) {
        this.amount = amount;
    }

    /**
     * 获取酒券的有效期天数，0代表永久
     *
     * @return 酒券的有效期天数，0代表永久
     */
    public int getValidDay() {
        return validDay;
    }

    /**
     * 设置酒券的有效期天数，0代表永久
     *
     * @param validDay 要设置的酒券的有效期天数，0代表永久
     */
    public void setValidDay(int validDay) {
        this.validDay = validDay;
    }

    /**
     * 获取酒券总数，酒券发放数量控制，0代表不限
     *
     * @return 酒券总数，酒券发放数量控制，0代表不限
     */
    public int getTotal() {
        return total;
    }

    /**
     * 设置酒券总数，酒券发放数量控制，0代表不限
     *
     * @param total 要设置的酒券总数，酒券发放数量控制，0代表不限
     */
    public void setTotal(int total) {
        this.total = total;
    }

    /**
     * 获取发放数量，记录该酒券已发放数量
     *
     * @return 发放数量，记录该酒券已发放数量
     */
    public int getIssueNum() {
        return issueNum;
    }

    /**
     * 设置发放数量，记录该酒券已发放数量
     *
     * @param lssueNum 要设置的发放数量，记录该酒券已发放数量
     */
    public void setIssueNum(int issueNum) {
        this.issueNum = issueNum;
    }

    /**
     * 获取是否删除，1代表已删除，0未删除
     *
     * @return 是否删除，1代表已删除，0未删除
     */
    public byte getIsDelete() {
        return isDelete;
    }

    /**
     * 设置是否删除，1代表已删除，0未删除
     *
     * @param isDelete 要设置的是否删除，1代表已删除，0未删除
     */
    public void setIsDelete(byte isDelete) {
        this.isDelete = isDelete;
    }

    /**
     * 获取酒券描述
     *
     * @return 酒券描述
     */
    public String getDescription() {
        return description;
    }

    /**
     * 设置酒券描述
     *
     * @param description
     */
    public void setDescription(String description) {
        this.description = description;
    }

    /**
     * 获取酒券添加时间
     *
     * @return 酒券添加时间
     */
    public Date getAddTime() {
        return addTime;
    }

    /**
     * 设置酒券添加时间
     *
     * @param addTime 要设置的酒券添加时间
     */
    public void setAddTime(Date addTime) {
        this.addTime = addTime;
    }

    /**
     * 获取酒券添加IP
     *
     * @return 酒券添加IP
     */
    public String getAddIp() {
        return addIp;
    }

    /**
     * 设置酒券添加IP
     *
     * @param addIp 要设置的酒券添加IP
     */
    public void setAddIp(String addIp) {
        this.addIp = addIp;
    }

	/**
	 * @return timeLimit
	 */
	public String getTimeLimit() {
		return timeLimit;
	}

	/**
	 * @param timeLimit 要设置的 timeLimit
	 */
	public void setTimeLimit(String timeLimit) {
		this.timeLimit = timeLimit;
	}

	/**
	 * @return maxTenderAmount
	 */
	public double getMaxTenderAmount() {
		return maxTenderAmount;
	}

	/**
	 * @param maxTenderAmount 要设置的 maxTenderAmount
	 */
	public void setMaxTenderAmount(double maxTenderAmount) {
		this.maxTenderAmount = maxTenderAmount;
	}

	/**
	 * @return minTenderAmount
	 */
	public double getMinTenderAmount() {
		return minTenderAmount;
	}

	/**
	 * @param minTenderAmount 要设置的 minTenderAmount
	 */
	public void setMinTenderAmount(double minTenderAmount) {
		this.minTenderAmount = minTenderAmount;
	}

	/**
	 * @return number
	 */
	public int getNumber() {
		return number;
	}

	/**
	 * @param number 要设置的 number
	 */
	public void setNumber(int number) {
		this.number = number;
	}
}
